package ZmiennaLingwistyczna;

import PrzestrzenCiagla.CiaglyZbiorRozmyty;
import PrzestrzenCiagla.ZbiorRozmytyTypu2;

public class WartoscLingwistycznaTypu2 {

	protected String etykieta;
	protected ZbiorRozmytyTypu2 zbior;
	protected ModyfikatorLingwistyczny modyfikator;
	
	public WartoscLingwistycznaTypu2(String etykieta, ZbiorRozmytyTypu2 zbior) {
		this(etykieta, zbior, null);
	}
	
	public WartoscLingwistycznaTypu2(String etykieta, ZbiorRozmytyTypu2 zbior, ModyfikatorLingwistyczny modyfikator) {
		super();
		this.etykieta = etykieta;
		this.zbior = zbior;
		this.modyfikator = modyfikator;
	}
	
	public String getEtykieta() {
		return etykieta;
	}

	public ZbiorRozmytyTypu2 getZbior() {
		return zbior;
	}
	
	public ModyfikatorLingwistyczny getModyfikator() {
		return modyfikator;
	}

	public void setModyfikator(ModyfikatorLingwistyczny modyfikator) {
		this.modyfikator = modyfikator;
	}
	
	public CiaglyZbiorRozmyty getPrzynaleznosc(float x){
		return zbior.getPrzynaleznosc(x);
	}
	
	public float getBazowaPrzynaleznosc(float x){
		if(modyfikator != null){
			return (float) Math.pow(getZbior().getZbiorFNFSC().getPrzynaleznosc(x),modyfikator.getWspolczynnik());
		}
		return getZbior().getZbiorFNFSC().getPrzynaleznosc(x);
	}
	
	public boolean czyNalezy(float x){
		if(getBazowaPrzynaleznosc(x) > 0.0f){
			return true;
		}
		return false;
	}	
	
	@Override
	public String toString() {
		if(modyfikator !=null )
			return modyfikator + " " + etykieta;
		return etykieta;
	}
}
